前のページ   後のページ   目次へ

********************************

       ■■■■
     ■    ■       ■        ■
     ■           ■■■      ■■■
     ■    ■       ■        ■
       ■■■■
               〜基礎から ★ C++Programing〜
********************************

  【注意】 このマガジンは、最大化してお読みください。
       また、等角フォントでお読みください。
          (MS ゴシックなど)

********************************

 発行者      むーくん
 マガジンNO.  41(4−2)
 発行日      2000/1/8
 講読人数     2000名ぐらい
 マガジンID   0000050494
          このマガジンは、まぐまぐから配信されています。
********************************
★あいさつ★

東京では雪が降りました。久しぶりにまとまった雪です。
子供の頃はわくわくしたのになぁ。
いつからこんな風になっちゃったんだろう。

たまには雪だるまでも、作りたいですね。(^_^)v

********************************
★目次★

・制御の流れ
・無条件分岐
・「悪」な理由1
・「悪」な理由2
・サンプルプログラム
・予告

********************************
★制御の流れ★

今まで、軽く流してきましたが、実は重要な項目を無視しています。
それは、”プログラムの流れ方”です。

C++では、プログラムは、上から下に向かって流れていきます。
例えば、
cout << "Before" << endl;
cout << "After" << endl;
では、上のものが先、下のものは後に実行されます。
逆は絶対にあり得ません!!!

実は、これでは、困ることもあるのです。
例えば、入力確認。
ユーザーが間違った入力をしたら、もう一度入力まで戻りたいでしょう。
でも、流れには逆らえないから、戻ることはできません。

では、入力の回数を複数にしたらどうでしょう。100回とか。
これでも、101回ミスがあったらどうしようもありませんし、
はっきり言って、ムダすぎます。
なおかつ、何のために100回の入力があるのか、意味が分かりません。
(意味が分かりにくい)

これを解決するには、制御をコントロールできるようにすればよいのです。

だから下までいったプログラムを、もう一度上に戻すような操作が
必要になるのです。

********************************
★無条件分岐★

制御の流れを変えるもので、一番簡単なのが、無条件分岐です。
何の脈絡もなく、他の行にジャンプするのです。

但し、無条件分岐は、「悪」といわれています。
最新のプログラミング言語では、これは、無くされていっています。

だから、本マガジンでは、詳しい文法などは紹介しません。
サンプルプログラムは、載せておくので、試しに実行してみてください。

********************************
★「悪」な理由1★

無条件分岐は、論理と関係なくイキナリジャンプできるので、
あっちこっちに行ったり来たりできます。

それが、2,3個ならば、混乱しませんが、
何個も何個も複雑に絡み合って、どこから来て、次はどこにジャンプ
するのかなど、さっぱり分からなくなってしまいます。

(何万行もあるプログラムでは、もはや追跡は不可能です)

丁度、家電製品のコードのような状態です。
たこ足配線したりして、コードが絡まると、どれがどれだかさっぱり
分かりませんよね?

それが、プログラムで起きるわけです。
エラーがどこで起きてるか分からないし、最悪です。

こういうプログラムを「スパゲッティー・プログラム」といいます。

********************************
★「悪」な理由2★

論理と関係ないジャンプをくり返すので、コンパイラがパターンを
分析しにくく、効率の良いソフトウェアを作成できません。

「ある決まり」に、のっとってプログラムの流れを制御すると
いうことが大事なのです。

********************************
★サンプルプログラム★

#include<iostream>
using namespace std;

int main(void){
            int a;
            a = 5;
            goto there;      /* thereの行に飛ぶ */
            a = a + 100;    /* thereに飛んでしまうので、実行されない*/

there:    cout << "a = " << a; /* 飛ぶ先 */
           return 0;
}   
    

警告(warning)がでますが、無視して実行してください。
a = 5
と表示されるはずです。

********************************
★予告★

・「連結」について学習します。
********************************


講読解除はこちら

http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html

バックナンバーはこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html

内容について質問やご意見など
smukun@hotmail.com

筆者のWebサイト(むーくんの理学的なんでも講座)
http://members.tripod.co.jp/mukun_mmg/

************************************

前のページ   後のページ   目次へ

[PR]話題の新車を無料プレゼント中:必ず当る抽選会!今すぐ応募で簡単GET